package main

import (
	"fmt"
	"github.com/shirou/gopsutil/cpu"
	"log"
	"time"
)

func main() {
	// 定义采样的时间间隔和持续时间
	sampleInterval := 2 * time.Second // 采样间隔
	totalDuration := 30 * time.Second // 总采样时间

	// 计算总采样次数
	totalSamples := int(totalDuration / sampleInterval)

	// 初始化存储 CPU 使用率历史数据的切片
	cpuUsageHistory := make([]float64, 0, totalSamples)

	for i := 0; i < totalSamples; i++ {
		cpuUsage, err := cpu.Percent(sampleInterval, false)
		if err != nil {
			log.Fatal(err)
		}

		// 获取所有 CPU 核心的平均使用率
		averageCPUUsage := calculateAverage(cpuUsage)

		// 将使用率添加到历史数据中
		cpuUsageHistory = append(cpuUsageHistory, averageCPUUsage)

		time.Sleep(sampleInterval)
	}

	// 计算 CPU 使用率的变化趋势
	trend := calculateTrend(cpuUsageHistory)

	fmt.Printf("CPU 使用率变化趋势: %s\n", trend)
}

func calculateAverage(values []float64) float64 {
	sum := 0.0
	for _, value := range values {
		sum += value
	}
	return sum / float64(len(values))
}

func calculateTrend(data []float64) string {
	if len(data) <= 1 {
		return "无足够数据来计算趋势"
	}

	// 计算趋势
	delta := data[len(data)-1] - data[0]
	if delta > 0 {
		return "CPU 使用率上升"
	} else if delta < 0 {
		return "CPU 使用率下降"
	} else {
		return "CPU 使用率保持不变"
	}
}
